perm filename UPDATE.SAI[REV,MUS] blob sn#242156 filedate 1977-05-24 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	PROCEDURE unit_print(
C00004 00003	PROCEDURE update_display(
C00007 ENDMK
C⊗;
PROCEDURE unit_print(
      INTEGER position, pog;
      RECORD_POINTER(REV_UNIT) unit;
      BOOLEAN header(FALSE));
   BEGIN "unit print"
   INTEGER wid, dig;
   STRING text;

   IF
      header
    THEN BEGIN
      display(UNIT_LABEL_POS,
"  Delay    Gain   Time    #Samples     Wall     Frequency   Clock",
            UNIT_LABEL_PIECE
            );
      RETURN;
      END;

   IF
      unit = NULL_RECORD
    THEN BEGIN
      display(position,"[Input Signal]",pog);
      RETURN;
      END;

   GETFORMAT(wid,dig);

   text ← NULL;
   SETFORMAT(6,2);
   text ← text&(" "&CVF(get_spec(unit,"delay")*1000.0)&"ms");
   SETFORMAT(5,3);
   text ← text&(" "&CVF(get_spec(unit,"gain")));
   SETFORMAT(5,2);
   text ← text&(" "&CVF(get_spec(unit,"decay"))&"sec");
   SETFORMAT(4,0);
   text ← text&("    "&CVS(get_spec(unit,"#samples")));
   SETFORMAT(6,2);
   text ← text&("   "&CVF(get_spec(unit,"wall"))&"m");
   SETFORMAT(9,2);
   text ← text&("  "&CVF(get_spec(unit,"frequency"))&"Hz");
   SETFORMAT(6,0);
   text ← text&(" "&CVS(get_spec(unit,"rate"))&"/sec");

   display(position,text,pog);
   SETFORMAT(wid,dig);
   END   "unit print";
PROCEDURE update_display(
      RECORD_POINTER(REV_TREE) the_tree;
      RECORD_POINTER(REV_UNIT) the_unit;
      REFERENCE INTEGER the_previous_position;
      REFERENCE BOOLEAN the_unit_update_flag,
            the_tree_update_flag,
            the_move_update_flag,
            the_refresh_flag;
      BOOLEAN the_nearest_prime_flag);
   BEGIN "update display"
   RECORD_POINTER(REV_UNIT) the_tree_unit;
   RECORD_POINTER(REV_TREE) tree;
   RECORD_POINTER(REV_UNIT) unit;
   INTEGER line, level, indent;
   BOOLEAN branching;

   SAFE OWN INTEGER ARRAY PPINFO[0:24];

   ∂ Do a PPINFO uuo and check whether the display was manually cleared.;
   CODE('702240000000,PPINFO[0]);
   the_refresh_flag ← the_refresh_flag ∨
         (PPINFO[2] LAND '200000000000);

   IF
      the_refresh_flag
    THEN BEGIN
      unit_print(UNIT_LABEL_POS,UNIT_LABEL_PIECE,NULL_RECORD,TRUE);
      END;

   IF
      the_unit_update_flag
              ∨
      the_refresh_flag
    THEN BEGIN
      unit_print(UNIT_POS,UNIT_PIECE,the_unit);
      the_unit_update_flag ← FALSE;
      END;

   IF
      the_tree_update_flag
              ∨
      the_refresh_flag
    THEN BEGIN
      tree_print(the_tree);
      the_tree_update_flag ← FALSE;
      the_move_update_flag ← TRUE;
      END;